package com.example.demo.reflect;

import java.lang.annotation.*;
import java.lang.reflect.Method;

@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
    String value();
}

class ParentClass {
    @MyAnnotation("Parent Method Annotation")
    public void myMethod() {}
}

class ChildClass extends ParentClass {
    @Override
    public void myMethod() {}
}

public class Main {
    public static void main(String[] args) throws NoSuchMethodException {
        // 获取子类方法
        Method childMethod = ChildClass.class.getMethod("myMethod");

        // 获取子类方法上的注解
        MyAnnotation childAnnotation = childMethod.getAnnotation(MyAnnotation.class);
        System.out.println(childAnnotation); // 输出 null，因为子类方法没有注解

        // 获取父类方法
        Method parentMethod = ParentClass.class.getMethod("myMethod");

        // 获取父类方法上的注解
        MyAnnotation parentAnnotation = parentMethod.getAnnotation(MyAnnotation.class);
        System.out.println(parentAnnotation.value()); // 输出 "Parent Method Annotation"
    }
}